home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / APPEXPRT.PAK / CMDI.OWL < prev    next >
Text File  |  1997-05-06  |  12KB  |  406 lines

  1. ##{cheader.snp}
  2. #include <owl/pch.h>
  3.  
  4. ##@OPT_APPL_TOOLBAR
  5. #include <owl/buttonga.h>
  6. ##@OPT_APPL_STATUSBAR
  7. #include <owl/statusba.h>
  8. ##@QUERY_APPL_OLE_AUTO 2
  9. #include <owl/olefacto.h>
  10. #include <ocf/ocreg.h>
  11. ##@OPT_APPL_REGISTRY 2
  12. #include <classlib/cmdline.h>
  13. #include <winsys/registry.h>
  14.  
  15. ##QUERY_FILE_H [[FileName]]
  16. #include "[[FileName]]"
  17. ##<<TMDIClient QUERY_FILE_H [[FileName]]
  18. #include "[[FileName]]"
  19. ##<<TDialog QUERY_FILE_H [[Filename]]
  20. #include "[[Filename]]"                        // Definition of about dialog.
  21.  
  22. ##--BEGIN-- @OPT_APPL_HELP
  23. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 3
  24. //
  25. // Generated help file.
  26. //
  27. ##@QUERY_APPL_HELP [[HelpFile]]
  28. const char HelpFileName[] = "[[HelpFile]].hlp";
  29.  
  30.  
  31. ##--END-- @OPT_APPL_HELP
  32. //{{[[TApplication]] Implementation}}
  33.  
  34.  
  35. ##--BEGIN-- @QUERY_APPL_OLE_AUTO
  36. //
  37. // OLE's ITypeInfo browses this symbol table for a list of all data,
  38. // properties, and methods exposed by this automated class.
  39. //
  40. DEFINE_AUTOCLASS([[TApplication]])
  41.   EXPOSE_APPLICATION([[TApplication]], "Application", "Application object", 0)
  42.   EXPOSE_QUIT("Quit", "Quit application", 0)
  43. //{{[[TApplication]]SYM_TBL_BEGIN}}
  44. //{{[[TApplication]]SYM_TBL_END}}
  45. END_AUTOCLASS([[TApplication]], tfAppObject | tfCanCreate, "[[TApplication]]", 0, 0);
  46.  
  47.  
  48. DEFINE_APP_DICTIONARY(AppDictionary);
  49. static TPointer<TRegistrar> Registrar;
  50.  
  51. REGISTRATION_FORMAT_BUFFER(200)
  52.  
  53. BEGIN_REGISTRATION(ApplicationReg)
  54. ##@QUERY_OLE_GUID [[GUID]]
  55.   REGDATA(clsid, "{[[GUID]]}")
  56. ##--BEGIN-- @QUERY_PRJ_NAME [[AppTitle]]
  57.   REGDATA(progid, "[[AppTitle]].Application.1")
  58.   REGDATA(appname, "[[AppTitle]] Server")
  59.   REGDATA(description, "[[AppTitle]] Server Application")
  60.   REGDATA(cmdline, "/Automation")
  61. //  REGDATA(debugger, "TDW")
  62. ##--END-- @QUERY_PRJ_NAME [[AppTitle]]
  63. END_REGISTRATION
  64.  
  65.  
  66. ##--END-- @QUERY_APPL_OLE_AUTO
  67. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 3
  68. //
  69. // Build a response table for all messages/commands handled by the application.
  70. //
  71. ##@OPT_APPL_MRU
  72. DEFINE_RESPONSE_TABLE2([[TApplication]], TRecentFiles, TApplication)
  73. ##!@OPT_APPL_MRU
  74. DEFINE_RESPONSE_TABLE1([[TApplication]], TApplication)
  75. //{{[[TApplication]]RSP_TBL_BEGIN}}
  76. ##@OPT_APPL_HELP 2
  77. ##:DBResponse(\\"[[TApplication]]", "CM_HELPCONTENTS", "CmHelpContents", "", "COMMAND")
  78. ##:DBResponse(\\"[[TApplication]]", "CM_HELPUSING", "CmHelpUsing", "", "COMMAND")
  79.   EV_COMMAND(CM_HELPCONTENTS, CmHelpContents),
  80.   EV_COMMAND(CM_HELPUSING, CmHelpUsing),
  81. ##:DBResponse(\\"[[TApplication]]", "CM_HELPABOUT", "CmHelpAbout", "", "COMMAND")
  82.   EV_COMMAND(CM_HELPABOUT, CmHelpAbout),
  83. ##@OPT_APPL_DRAGDROP
  84. ##:DBResponse(\\"[[TApplication]]", "", "", "WM_DROPFILES", "")
  85.   EV_WM_DROPFILES,
  86. ##@OPT_APPL_PRINTING
  87. ##:DBResponse(\\"[[TApplication]]", "", "", "WM_WININICHANGE", "")
  88.   EV_WM_WININICHANGE,
  89. ##@OPT_APPL_MRU
  90.   EV_REGISTERED(MruFileMessage, CmFileSelected),
  91. //{{[[TApplication]]RSP_TBL_END}}
  92. END_RESPONSE_TABLE;
  93.  
  94.  
  95. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  96. //--------------------------------------------------------
  97. // [[TApplication]]
  98. // ~~~~~
  99. //
  100. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  101. ##--BEGIN-- @QUERY_APPL_OLE_AUTO
  102. ##QUERY_WIND_TITLE [[Title]]
  103. ##@QUERY_TARGET_NAME [[Target]]
  104. ##@OPT_APPL_MRU
  105. [[TApplication]]::[[TApplication]]() : TApplication(::ApplicationReg["appname"], ::Module, &::AppDictionary), TRecentFiles(".\\[[Target]].ini", 4)
  106. ##!@OPT_APPL_MRU
  107. [[TApplication]]::[[TApplication]]() : TApplication(::ApplicationReg["appname"], ::Module, &::AppDictionary)
  108. ##--END-- @QUERY_APPL_OLE_AUTO
  109. ##--BEGIN-- !@QUERY_APPL_OLE_AUTO
  110. ##QUERY_WIND_TITLE [[Title]]
  111. ##@QUERY_TARGET_NAME [[Target]]
  112. ##@OPT_APPL_MRU
  113. [[TApplication]]::[[TApplication]]() : TApplication("[[Title]]"), TRecentFiles(".\\[[Target]].ini", 4)
  114. ##QUERY_WIND_TITLE [[Title]]
  115. ##!@OPT_APPL_MRU
  116. [[TApplication]]::[[TApplication]]() : TApplication("[[Title]]")
  117. ##--END-- !@QUERY_APPL_OLE_AUTO
  118. {
  119. ##@OPT_APPL_HELP 3
  120.   HelpState = false;
  121.   ContextHelp = false;
  122.   HelpCursor = 0;
  123.  
  124. ##@OPT_APPL_PRINTING 3
  125.   Printer = 0;
  126.   Printing = 0;
  127.  
  128.   // INSERT>> Your constructor code here.
  129. }
  130.  
  131.  
  132. [[TApplication]]::~[[TApplication]]()
  133. {
  134. ##@OPT_APPL_PRINTING 2
  135.   delete Printer;
  136.  
  137.   // INSERT>> Your destructor code here.
  138. }
  139.  
  140.  
  141. ##--BEGIN-- @OPT_APPL_HELP
  142. bool [[TApplication]]::CanClose()
  143. {
  144.   bool result = TApplication::CanClose();
  145.  
  146. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  147.   // Close the help engine if we used it.
  148.   //
  149.   if (result && HelpState)
  150.     GetMainWindow()->WinHelp(HelpFileName, HELP_QUIT, 0);
  151.  
  152.   return result;
  153. }
  154.  
  155.  
  156. ##--END-- @OPT_APPL_HELP
  157. ##--BEGIN-- @OPT_APPL_TOOLBAR
  158. void [[TApplication]]::SetupSpeedBar(TDecoratedMDIFrame* frame)
  159. {
  160.   ApxHarbor = new THarbor(*frame);
  161.  
  162. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  163.   // Create default toolbar New and associate toolbar buttons with commands.
  164.   //
  165.   TDockableControlBar* cb = new TDockableControlBar(frame);
  166.   cb->Insert(*new TButtonGadget(CM_MDIFILENEW, CM_MDIFILENEW));
  167.   cb->Insert(*new TButtonGadget(CM_MDIFILEOPEN, CM_MDIFILEOPEN));
  168.   cb->Insert(*new TButtonGadget(CM_FILESAVE, CM_FILESAVE));
  169.   cb->Insert(*new TSeparatorGadget(6));
  170.   cb->Insert(*new TButtonGadget(CM_EDITCUT, CM_EDITCUT));
  171.   cb->Insert(*new TButtonGadget(CM_EDITCOPY, CM_EDITCOPY));
  172.   cb->Insert(*new TButtonGadget(CM_EDITPASTE, CM_EDITPASTE));
  173.   cb->Insert(*new TSeparatorGadget(6));
  174.   cb->Insert(*new TButtonGadget(CM_EDITUNDO, CM_EDITUNDO));
  175.   cb->Insert(*new TSeparatorGadget(6));
  176.   cb->Insert(*new TButtonGadget(CM_EDITFIND, CM_EDITFIND));
  177.   cb->Insert(*new TButtonGadget(CM_EDITFINDNEXT, CM_EDITFINDNEXT));
  178. ##@OPT_APPL_PRINTING 3
  179.   cb->Insert(*new TSeparatorGadget(6));
  180.   cb->Insert(*new TButtonGadget(CM_FILEPRINT, CM_FILEPRINT));
  181.   cb->Insert(*new TButtonGadget(CM_FILEPRINTPREVIEW, CM_FILEPRINTPREVIEW));
  182. ##@OPT_APPL_HELP 2
  183.   cb->Insert(*new TSeparatorGadget(6));
  184.   cb->Insert(*new TButtonGadget(CM_HELPCONTENTS, CM_HELPCONTENTS));
  185.  
  186. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  187.   // Add caption and fly-over help hints.
  188.   //
  189.   cb->SetCaption("Toolbar");
  190.   cb->SetHintMode(TGadgetWindow::EnterHints);
  191.  
  192.   ApxHarbor->Insert(*cb, alTop);
  193. }
  194.  
  195.  
  196. ##--END-- @OPT_APPL_TOOLBAR
  197. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  198. //--------------------------------------------------------
  199. // [[TApplication]]
  200. // ~~~~~
  201. // Application intialization.
  202. //
  203. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  204. void [[TApplication]]::InitMainWindow()
  205. {
  206.   if (nCmdShow != SW_HIDE)
  207. ##@QUERY_APPL_STARTUP == VALUE_NORMAL
  208.     nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWNORMAL : nCmdShow;
  209. ##@QUERY_APPL_STARTUP == VALUE_MIN
  210.     nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWMINIMIZED : nCmdShow;
  211. ##@QUERY_APPL_STARTUP == VALUE_MAX
  212.     nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWMAXIMIZED : nCmdShow;
  213.  
  214. ##<<TMDIClient QUERY_CLASS_NAME [[TMDIClient]]
  215.   MdiClient = new [[TMDIClient]];
  216. ##@OPT_APPL_STATUSBAR
  217.   TDecoratedMDIFrame* frame = new TDecoratedMDIFrame(Name, IDM_MDI, *MdiClient, true);
  218. ##!@OPT_APPL_STATUSBAR
  219.   TDecoratedMDIFrame* frame = new TDecoratedMDIFrame(Name, IDM_MDI, *MdiClient, false);
  220.  
  221. ##QUERY_WIND_STYLE [[StyleAttributes]]
  222. ##StyleAttributes != "" 4
  223.   // Override the default window style for the main window.
  224.   //
  225.   [[StyleAttributes]]
  226.  
  227. ##@OPT_APPL_DRAGDROP 4
  228.   // Enable acceptance of dropped files
  229.   //
  230.   frame->Attr.ExStyle |= WS_EX_ACCEPTFILES;
  231.  
  232. ##{fwndbkgd.snp}
  233. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  234.   // Assign icons for this application.
  235.   //
  236.   frame->SetIcon(this, IDI_MDIAPPLICATION);
  237.   frame->SetIconSm(this, IDI_MDIAPPLICATION);
  238.  
  239. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  240.   // Associate with the accelerator table.
  241.   //
  242. ##@QUERY_APPL_MODEL == VALUE_MDI
  243.   frame->Attr.AccelTable = IDM_MDI;
  244. ##@QUERY_APPL_MODEL == VALUE_SDI
  245.   frame->Attr.AccelTable = IDM_SDI;
  246.  
  247. ##@OPT_APPL_STATUSBAR 6
  248.   TStatusBar* sb = new TStatusBar(frame, TGadget::Recessed,
  249.                                   TStatusBar::CapsLock        |
  250.                                   TStatusBar::NumLock         |
  251.                                   TStatusBar::ScrollLock);
  252.   frame->Insert(*sb, TDecoratedFrame::Bottom);
  253.  
  254. ##@OPT_APPL_TOOLBAR 2
  255.   SetupSpeedBar(frame);
  256.  
  257.   SetMainWindow(frame);
  258.  
  259.   frame->SetMenuDescr(TMenuDescr(IDM_MDI));
  260. ##--BEGIN-- @QUERY_APPL_CONTROL == VALUE_3D
  261.  
  262. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  263.   // Windows 3-D controls.
  264.   //
  265.   EnableCtl3d(true);
  266. ##--END-- @QUERY_APPL_CONTROL == VALUE_3D
  267. ##--BEGIN-- @QUERY_APPL_CONTROL == VALUE_BWCC
  268.  
  269. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  270.   // Borland Windows custom controls.
  271.   //
  272.   EnableBWCC();
  273. ##--END-- @QUERY_APPL_CONTROL==VALUE_BWCC
  274. }
  275.  
  276.  
  277. ##--BEGIN-- @OPT_APPL_REGISTRY
  278. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  279. //--------------------------------------------------------
  280. // [[TApplication]]
  281. // ~~~~~
  282. // Application instance initialization.
  283. //
  284. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  285. void [[TApplication]]::InitInstance()
  286. {
  287.   TApplication::InitInstance();
  288.  
  289.   ProcessCmdLine(lpCmdLine);
  290. }
  291.  
  292.  
  293. ##--END-- @OPT_APPL_REGISTRY
  294. ##{registry.snp}
  295. ##--BEGIN-- @OPT_APPL_HELP
  296. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  297. //--------------------------------------------------------
  298. // [[TApplication]]
  299. // ~~~~~
  300. // Menu Help Contents command
  301. //
  302. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  303. void [[TApplication]]::CmHelpContents()
  304. {
  305. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  306.   // Show the help table of contents.
  307.   //
  308.   HelpState = GetMainWindow()->WinHelp(HelpFileName, HELP_CONTENTS, 0);
  309. }
  310.  
  311.  
  312. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  313. //--------------------------------------------------------
  314. // [[TApplication]]
  315. // ~~~~~
  316. // Menu Help Using Help command
  317. //
  318. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  319. void [[TApplication]]::CmHelpUsing()
  320. {
  321. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  322.   // Display the contents of the Windows help file.
  323.   //
  324.   HelpState = GetMainWindow()->WinHelp(HelpFileName, HELP_HELPONHELP, 0);
  325. }
  326. ##--END-- @OPT_APPL_HELP
  327.  
  328.  
  329. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 3
  330. //--------------------------------------------------------
  331. // [[TApplication]]
  332. // ~~~~~~~~~~~
  333. ##@QUERY_TARGET_NAME [[Target]]
  334. // Menu Help About [[Target]] command
  335. //
  336. void [[TApplication]]::CmHelpAbout()
  337. {
  338. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  339.   // Show the modal dialog.
  340.   //
  341. ##<<TDialog QUERY_CLASS_NAME [[TDialog]]
  342.   [[TDialog]](MainWindow).Execute();
  343. }
  344. ##--BEGIN-- @OPT_APPL_DRAGDROP
  345.  
  346.  
  347. void [[TApplication]]::EvDropFiles(TDropInfo drop)
  348. {
  349.   TFileDropletList files;
  350.  
  351. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 3
  352.   // Iterate thru the entries in drop and create FileDrops objects for each
  353.   // one.
  354.   //
  355.   int fileCount = drop.DragQueryFileCount();  // Number of files dropped.
  356.   for (int i = 0; i < fileCount; i++)
  357.     files.Add(new TFileDroplet(drop, i));
  358.  
  359. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  360.   // Open the files that were dropped.
  361.   //
  362.   AddFiles(files);
  363.  
  364. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  365.   // Release the memory allocated for this handle with DragFinish.
  366.   //
  367.   drop.DragFinish();
  368. }
  369.  
  370.  
  371. void [[TApplication]]::AddFiles(TFileDropletList& files)
  372. {
  373. ##<<TMDIClient QUERY_CLASS_NAME [[TMDIClient]]
  374.   [[TMDIClient]]* theClient = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), [[TMDIClient]]);
  375.  
  376.   if (theClient) {
  377. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  378.     // Open all files dragged in.
  379.     //
  380.     for (TFileDropletListIter fileIter(files); fileIter; fileIter++)
  381.       theClient->OpenFile(fileIter.Current()->GetName());
  382.   }
  383. }
  384. ##--END-- @OPT_APPL_DRAGDROP
  385. ##--BEGIN-- @OPT_APPL_MRU
  386.  
  387.  
  388. int32 [[TApplication]]::CmFileSelected(uint wp, int32)
  389. {
  390.   TAPointer<char> text = new char[_MAX_PATH];
  391.  
  392.   GetMenuText(wp, text, _MAX_PATH);
  393.  
  394. ##<<TMDIClient QUERY_CLASS_NAME [[TMDIClient]]
  395.   [[TMDIClient]]* theClient = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), [[TMDIClient]]);
  396.  
  397.   if (theClient)
  398.     theClient->OpenFile(text);
  399.   return 0;
  400. }
  401. ##--END-- @OPT_APPL_MRU
  402.  
  403.  
  404. ##{main.owl}
  405.  
  406.